草庐IT

c++ - std::equal_range 与 lambda

全部标签

c++ - 在 DLL 中的哪里调用 LoadLibrary?

我正在制作一个DLL,它使用LoadLibrary动态加载另一个DLL(winsock)。我读到我不应该在DllMain中调用LoadLibrary,但我反复使用它并且不想每次使用它时都必须调用LoadLibrary/GetProcAddress。所以我的问题是:在DLL中调用LoadLibrary的最佳位置在哪里?LoadLibrary/GetProcAddress有多快?在每个函数中都这样做是不是开销很大? 最佳答案 创建一个在DllMain之外进行设置的初始化函数。您的代码会在加载DLL后调用该函数,然后它可以调用完成初始化所

c - Windows 共享内存段

我一直在用谷歌搜索这个问题,但未能找到明确的答案,所以我希望有人对WindowsVSLinux中的共享内存段有一些了解。在Linux中,有两种为IPC创建共享内存的方法:共享内存段(shmget等)和内存映射文件(mmap)。根据我的简要理解,mmap要求您在操作系统中的某处有一个实际文件来映射,而共享内存段只是内存中基于名称的段,可以由进程附加到该段上。在Windows中,似乎只有内存映射文件的等价物,您必须在某处float一个实际文件。我的问题:这实际上是Windows中唯一一种共享内存,还是它有一个用于创建非基于文件的共享内存段的API。 最佳答案

c - 调试断言失败。表达式(流!= NULL)

我收到以下错误:DebugAssertionFailed.Expression(stream!=NULL)File:f:\dd\vctools/crty_bld/self_x86\crt\src\fwrite.c创建4个线程时CPU使用率100%。该代码最初在一段时间内运行良好,然后出现此错误。该代码是使用WSAWaitforMultipleEvents()的UDP单服务器/多客户端应用程序。编辑:调试器在fwrite.c中触发断点if(size==0||count==0)return0;//justcheckingforstream!=NULLhere//restofthevalid

CreateProcess() 似乎不受 lpCurrentDirectory 的影响

我目前正在尝试使用CreateProcess()API启动一个进程:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx我遇到的主要问题是子进程似乎是在父进程的工作目录下启动的,不管lpCurrentDirectory参数中指示的是什么.提供更多细节:lpCurrentDirectory似乎适用于简单的命令行程序,但对于更复杂的程序(想想GUI),它似乎没有被考虑在内,因为所有资源依赖项都是从调用目录进程中搜索的。我可以尝试来回切换调用进程的工作目录,但第二个问题是被调用进程不在目标

c++ - Windows MessageBox 忽略 WM_CLOSE

我们有一个遗留的CWindows应用程序,它在发生致命连接错误时通过MessageBox调用弹出一个模式窗口。我们的网络工程师可能同时运行其中的许多应用程序。有时,网络故障会导致这些应用程序处理的连接同时失败。在Windows7上,从任务栏中选择“关闭所有窗口”功能确实有效,因为模态对话框似乎没有处理WM_QUIT消息。我通常在Linux系统上工作,但我的MSDN研究表明,我可以捕获和处理此消息的唯一方法是创建我自己的对话框并自行处理消息。我担心的是我忽略了一个更简单的解决方案,任何人都可以提供替代方案吗? 最佳答案 模态对话的消息

c - 如何在 Windows 7 X64 SP1(x64 模式)下执行直接系统调用?

我试图模拟syscall指令在Windows7X64(SP1)上的工作方式,因此我使用MinGW64编写了一个64位GCC示例。据我所知,对于Windows,所有系统调用入口点都在ntdll.dll或ntdll32.dll中(在这种情况下,我们只关心ntdll.dll)。Status=NtCreateFile(&FileHandle,//returnedfilehandle(GENERIC_WRITE|SYNCHRONIZE),//desiredaccess&ObjectAttributes,//ptrtoobjectattributes&Iosb,//ptrtoI/Ostatusbl

c++ - 如何为 native Windows(而不是 X Windows)编译 gtk+ 应用程序?

我已经设法用cygwin编译了一个gtk+应用程序,但不幸的是,使用这种方法,应用程序需要运行x个窗Eloquent能启动。如何编译我的gtk+应用程序以在Windows上本地运行。我在网上看到过各种关于将-mno-cygwin标志用于gcc的帖子,但它似乎已被弃用?我也在stackoverflow上看到了这些帖子,但不清楚他们是在尝试为X编译还是为Windowsnative编译:Installinggtkandcompilingusinggccunderwindows?CompilingGTK+applicationsonwindows? 最佳答案

MATLAB 的自定义 C dll - loadlibrary 错误

我有一个为MATLAB编写的自定义dll,它在我们的开发机器上运行良好。但是,当我在没有开发工具的干净机器上尝试时,我收到消息:>>loadlibraryCMatLabCMatLab.h???Errorusing==>loadlibraryat279MicrosoftVisualC++2005or2008isrequiredtousethisfeature.经过一番研究,似乎很明显需要编译器在运行时解析头文件,所以我安装了标准的WindowsSDK,运行mex-setup来选择编译器,但我仍然得到同样的错误信息。这就是我为选择编译器所做的。>>mex-setupPleasechoose

c - 不弹出控制台窗口是否可行?

当在GCC-mingw32中编译这个程序并尝试运行它时,它总是在很短的时间内弹出一个控制台窗口并立即关闭。intmain(void){system("shutdown-s-t60");//Shutdownthecomputerin1minutereturn0;}我如何修改此代码以在不弹出任何窗口的情况下运行它?是否可行?谢谢。 最佳答案 您的可执行文件被标记为使用控制台子系统,这会使Windows自动显示控制台窗口。如果将其更改为使用GUI子系统,Windows将不会显示控制台窗口。要告诉MinGW使用GUI子系统,请传递-mwin

c++ - 函数名称与序数值 - 从 DLL 模块获取函数地址

我有一个DLL(WinDll.dll),它导出一个名为“SampleFunction”的函数。DLL与正在执行的应用程序位于同一文件夹中。现在,当我尝试按名称获取导出函数的地址时,它会给出错误127,但是,当我使用函数的序号值执行相同操作时,一切正常。任何想法如何以及为什么会发生这种情况?以下是加载并尝试使用导出函数的代码。我还附上了IDAProo的剪辑,其中显示了从WindDll.dll导出的函数。#include#includetypedefint(WINAPI*ProcP)(HINSTANCE,HINSTANCE,LPSTR,int);intWINAPIWinMain(HINST